//package com.sr.wslr.service.elasticsearch.convertor;
//
//import com.alibaba.fastjson.JSON;
//import com.google.common.collect.Lists;
//
//import com.sr.wslr.service.elasticsearch.ElasticConvertor;
//import com.sr.wslr.service.elasticsearch.annotation.ESEntity;
//import lombok.extern.slf4j.Slf4j;
//import org.elasticsearch.common.xcontent.XContentBuilder;
//import org.elasticsearch.common.xcontent.XContentFactory;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//@Slf4j
//@ESEntity(name="here")
//public class HereConvertor implements ElasticConvertor {
//
//	private HereInfoEntity entity = new HereInfoEntity();
//	private List<AttachmentEntity> bannerImgs;
//
//	public HereConvertor(HereInfoEntity entity){
//		this.entity = entity;
//	}
//
//	public HereConvertor(HereInfoEntity entity, List<AttachmentEntity> bannerImgs){
//		this.entity = entity;
//		this.bannerImgs = bannerImgs;
//	}
//
//	public HereConvertor(){
//	}
//
//	@Override
//	public String getTypeName() {
//		return "here";
//	}
//
//	@Override
//	public Map<String, Object> getJson() {
//		/**
//		 * <1> 以半角逗号分割的字符串形式 "lat,lon"；
//		 * <2> 明确以 lat 和 lon 作为属性的对象；
//		 * <3> 数组形式表示 [lon,lat]。
//		 */
//		List<Double> sAddrLocation = new ArrayList<Double>();
//		sAddrLocation.add(entity.getSAddrLng());
//		sAddrLocation.add(entity.getSAddrLat());
//
//		Map<String, Object> map = MapBuilder.with("id", entity.getId()+"")
//			.add("title", entity.getTitle())
//			.add("content", entity.getContent())
//
//			.add("donate", entity.getDonate())
//			.add("status", entity.getStatus())
//			.add("type", entity.getType())
//			.add("sortby", entity.getSortby())
//			.add("viewNum", entity.getViewNum())
//			.add("favorNum", entity.getFavorNum())
//			.add("commentNum", entity.getCommentNum())
//			.add("signInNum", entity.getSignInNum())
//			.add("score", entity.getScore())
//
//			.add("sLocation", entity.getSLocation())
//			.add("sFormatLocation", entity.getSFormatLocation())
//			.add("sAddrNation", entity.getSAddrNation())
//			.add("sAddrProvince", entity.getSAddrProvince())
//			.add("sAddrCity", entity.getSAddrCity())
//			.add("sAddrDistrict", entity.getSAddrDistrict())
//			.add("sAddrDetail", entity.getSAddrDetail())
//
//			.add("createBy", entity.getCreateBy())
//			.add("createDate", entity.getCreateDate())
//			.add("updateBy", entity.getUpdateBy())
//			.add("updateDate", entity.getUpdateDate())
//			.add("isDel", entity.getIsDel())
//
//			.add("sAddrLocation", sAddrLocation).build();
//		// 添加标签
//		//map.put("tags", JSON.toJSON(entity.getTags()));
//		List<String> tagsList = Lists.newArrayList();
//		List<TagEntity> tagEntities = entity.getTags();
//		for (TagEntity tag : tagEntities) {
//			tagsList.add(tag.getValue());
//		}
//
//		map.put("tags", JSON.toJSON(tagsList));
//		// 添加海报图片
//		if(bannerImgs!=null&&bannerImgs.size()>0){
//			map.put("bannerImgs", JSON.toJSON(bannerImgs));
//		}
//		return map;
//	}
//
//	@Override
//	public String getId() {
//		return entity.getId()+"";
//	}
//	@Override
//	public XContentBuilder getMappingBuilder() {
//		// datatype docs: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
//		XContentBuilder builder = null;
//		try {
//			builder = XContentFactory
//			.jsonBuilder()
//			.startObject().startObject("here").startObject("properties");
//			/** Common properties*/
//
//			builder.startObject("id")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("createBy")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("updateBy")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("createDate")
//			.field("type", ESFieldConst.TYPE_DATE)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("updateDate")
//			.field("type", ESFieldConst.TYPE_DATE)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("isDel")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			/** Project properties*/
//
//			builder.startObject("title")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//			builder.startObject("content")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//
//
//			builder.startObject("description")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//			builder.startObject("donate")
//			.field("type", ESFieldConst.TYPE_DOUBLE)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("status")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("type")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//
//			builder.startObject("sortby")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("viewNum")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("favorNum")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("commentNum")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("signInNum")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sLocation")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//			builder.startObject("sFormatLocation")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//			builder.startObject("score")
//			.field("type", ESFieldConst.TYPE_INT)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sAddrNation")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sAddrProvince")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sAddrCity")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sAddrDistrict")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_NOT_ANALYZED)
//			.endObject();
//
//			builder.startObject("sAddrDetail")
//			.field("type", ESFieldConst.TYPE_STRING)
//			.field("store", ESFieldConst.STORE_YES)
//			.field("index", ESFieldConst.INDEX_ANALYZED)
//			.field("analyzer", ESFieldConst.ANALYZER_IK)
//			.field("search_analyzer", ESFieldConst.SEARCH_ANALYZER_IK)
//			.endObject();
//
//			builder.startObject("sAddrLocation")
//			.field("type", ESFieldConst.TYPE_GEO_POINT)
//			.endObject();
//
//			builder.endObject().endObject().endObject();
//
//		} catch (IOException e) {
//			log.error(e.getStackTrace()+"");
//		}
//
//		return builder;
//	}
//
//}
